package com.alianzamedica.businessobject;

import java.util.Iterator;

import org.objectsearch.sqlsearch.ObjectSearch;
import org.w3c.dom.Document;

import com.alianzamedica.tools.Enviroment;

/**
 * @author Carlos
 * 
 */
public class PrescriptionDetail extends BusinessObject {

	private Integer prescriptionId;// 'PRESCRIPTION_ID', 'int(11)', 'NO',
	private Integer drugId;// 'DRUG_ID', 'int(11)', 'NO', 'PRI', '', ''
	private Float quantity; // 'QUANTITY', 'float', 'YES', '', '', ''
	private String comments;// /'COMMENTS', 'varchar(600)', 'YES', '', '', ''
	private String adminInfo;
	private Float quantitySold;
	private String dose; // DOSE varchar(200), /*dosis (posologia)*/
	private String period; // PERIOD varchar(100),/*periodo*/
	private String administrationForm; // ADMIN_FORM varchar(100),/*forma de
										// administracion*/

	/**
	 * id de la prescripcion.
	 * 
	 * @return id de la prescripcion.
	 */
	public Integer getPrescriptionId() {
		return prescriptionId;
	}

	/**
	 * id de la prescripcion.
	 * 
	 * @param prescriptionId
	 *            id de la prescripcion.
	 */
	public void setPrescriptionId(Integer prescriptionId) {
		this.prescriptionId = prescriptionId;
	}

	/**
	 * id del medicamento.
	 * 
	 * @return id del medicamento.
	 */
	public Integer getDrugId() {
		return drugId;
	}

	/**
	 * id del medicamento.
	 * 
	 * @param drugId
	 *            id del medicamento.
	 */
	public void setDrugId(Integer drugId) {
		this.drugId = drugId;
	}

	/**
	 * cantidad.
	 * 
	 * @return cantidad.
	 */
	public Float getQuantity() {
		return quantity;
	}

	/**
	 * cantidad.
	 * 
	 * @param quantity
	 *            cantidad.
	 */
	public void setQuantity(Float quantity) {
		this.quantity = quantity;
	}

	/**
	 * comentarios.
	 * 
	 * @return comentarios.
	 */
	public String getComments() {
		return comments;
	}

	/**
	 * comentarios.
	 * 
	 * @param comments
	 *            comentarios.
	 */
	public void setComments(String comments) {
		this.comments = comments;
	}

	@Override
	public void setValueToSearch(String name) {

	}

	/**
	 * info de administracion.
	 * 
	 * @param adminInfo
	 *            info de administracion.
	 */
	public void setAdminInfo(String adminInfo) {
		this.adminInfo = adminInfo;
	}

	/**
	 * info de administracion.
	 * 
	 * @return info de administracion.
	 */
	public String getAdminInfo() {
		return adminInfo;
	}

	/**
	 * cantidad vendida.
	 * 
	 * @return cantidad vendida.
	 */
	public Float getQuantitySold() {
		return quantitySold;
	}

	/**
	 * @param quantitySold
	 */
	public void setQuantitySold(Float quantitySold) {
		this.quantitySold = quantitySold;
	}

	/**
	 * dosis.
	 * 
	 * @return dosis.
	 */
	public String getDose() {
		return dose;
	}

	/**
	 * dosis.
	 * 
	 * @param dose
	 *            dosis.
	 */
	public void setDose(String dose) {
		this.dose = dose;
	}

	/**
	 * periodo de administración.
	 * 
	 * @return periodo de administración.
	 */
	public String getPeriod() {
		return period;
	}

	/**
	 * periodo de administración.
	 * 
	 * @param period
	 *            periodo de administración.
	 */
	public void setPeriod(String period) {
		this.period = period;
	}

	/**
	 * forma de administración.
	 * 
	 * @return forma de administración.
	 */
	public String getAdministrationForm() {
		return administrationForm;
	}

	/**
	 * forma de administración.
	 * 
	 * @param administrationForm
	 *            forma de administración.
	 */
	public void setAdministrationForm(String administrationForm) {
		this.administrationForm = administrationForm;
	}

	/**
	 * obtiene el medicamento asociado con la receta
	 * 
	 * @return medicamento.
	 * @throws Exception
	 *             si ocurre algun error.
	 */
	@SuppressWarnings("unchecked")
	public Drug getDrug() throws Exception {
		Enviroment env = Enviroment.getInstance();
		Document doc = env.getDocument();
		ObjectSearch search = new ObjectSearch(doc,
				"com.alianzamedica.connection.ConnectionImpl");
		Drug d = new Drug();
		Drug drug = null;
		if (drugId != null) {
			d.setId(this.drugId);
			Iterator<Drug> iterator = search.searchObjects(d).iterator();
			while (iterator.hasNext()) {
				drug = iterator.next();
			}
		}
		return drug;
	}

}
